// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: braces fieldsfirst space lnc
package cn.com.smartdevices.bracelet.chart.base;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.RectF;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
// Referenced classes of package cn.com.smartdevices.bracelet.chart.base:
// BaseChart
public class BarChart extends BaseChart
{
protected float mItemPadding;
protected int mMaxItemValue;
protected boolean mMirrored;
protected boolean mNeedRealign;
protected Axis mXAxis;
protected Axis mYAxis;
public BarChart()
{
}
public BarChart(Context context)
{
super(context);
}
protected void draw(Canvas canvas, RectF rectf, float f)
{
List list = mItems;
list;
JVM INSTR monitorenter ;
int i = mItems.size();
int j = 0;
_L2:
if (j >= i)
{
break; /* Loop/switch isn't completed */
}
((BarItem)mItems.get(j)).draw(canvas, f, mMirrored);
j++;
if (true) goto _L2; else goto _L1
_L1:
list;
JVM INSTR monitorexit ;
if (mXAxis != null)
{
mXAxis.draw(canvas, f);
}
if (mYAxis != null)
{
mYAxis.draw(canvas, f);
}
return;
Exception exception;
exception;
list;
JVM INSTR monitorexit ;
throw exception;
}
public int getMaxItemValue()
{
return mMaxItemValue;
}
protected float itemHeight(RectF rectf, BarItem baritem)
{
if (baritem.value >= mMaxItemValue)
{
return rectf.height() - mPaddingTop - mPaddingBottom;
} else
{
return ((float)baritem.value / (float)mMaxItemValue) * (rectf.height() - mPaddingTop - mPaddingBottom);
}
}
protected float itemOffsetX(RectF rectf, BarItem baritem)
{
return (rectf.width() / (float)mItems.size()) * (float)mItems.indexOf(baritem);
}
protected float itemOffsetY(RectF rectf, BarItem baritem)
{
return 0.0F;
}
protected float itemWidth(RectF rectf, BarItem baritem)
{
return rectf.width() / (float)mItems.size() - 2.0F * mItemPadding;
}
public void notifyChanged()
{
synchronized (mItems)
{
realignItems(mRect, mItems);
}
return;
exception;
list;
JVM INSTR monitorexit ;
throw exception;
}
protected void onItemsChanged(List list)
{
for (Iterator iterator = list.iterator(); iterator.hasNext();)
{
BarItem baritem = (BarItem)iterator.next();
baritem.mDensity = mDensity;
baritem.mDensityScale = mDensityScale;
}
mNeedRealign = true;
}
protected void onRectChanged(RectF rectf)
{
if (mXAxis != null)
{
RectF rectf1 = new RectF();
rectf1.left = rectf.left;
rectf1.top = rectf.bottom - (float)mXAxis.stroke;
rectf1.right = rectf.right;
rectf1.bottom = rectf.bottom;
mXAxis.setRect(rectf1);
}
if (mYAxis != null)
{
RectF rectf2 = new RectF();
rectf2.left = rectf.left;
rectf2.top = rectf.top;
rectf2.right = rectf.left + (float)mYAxis.stroke;
rectf2.bottom = rectf.bottom;
mYAxis.setRect(rectf2);
}
mNeedRealign = true;
}
protected void realignItems(RectF rectf, List list)
{
if (rectf == null || list == null || list.size() == 0)
{
return;
}
Iterator iterator = list.iterator();
do
{
if (!iterator.hasNext())
{
break;
}
BarItem baritem = (BarItem)iterator.next();
RectF rectf1;
float f;
float f1;
if (baritem.mRect == null)
{
rectf1 = new RectF();
baritem.mRect = rectf1;
} else
{
rectf1 = baritem.mRect;
}
if (mNeedRealign || baritem.mRect == null)
{
f = itemWidth(rectf, baritem);
f1 = itemHeight(rectf, baritem);
} else
{
f = baritem.mRect.width();
f1 = baritem.mRect.height();
}
rectf1.left = rectf.left + mItemPadding;
rectf1.right = f + rectf1.left;
if (!mMirrored)
{
rectf1.bottom = rectf.bottom - mPaddingBottom;
rectf1.top = rectf1.bottom - f1;
} else
{
rectf1.top = rectf.top + mPaddingTop;
rectf1.bottom = f1 + rectf1.top;
}
rectf1.offset(itemOffsetX(rectf, baritem), itemOffsetY(rectf, baritem));
baritem.needDraw = true;
if (rectf1.right < rectf.left + mPaddingLeft || rectf1.left > rectf.right - mPaddingRight)
{
baritem.needDraw = false;
}
} while (true);
mNeedRealign = false;
}
public void setItemPadding(float f)
{
mItemPadding = f;
}
public void setMaxItemValue(int i)
{
mMaxItemValue = i;
}
public void setNeedRealign(boolean flag)
{
mNeedRealign = flag;
}
public void sortItems()
{
synchronized (mItems)
{
Collections.sort(mItems, new BarItemComparator());
}
return;
exception;
list;
JVM INSTR monitorexit ;
throw exception;
}
private class BarItem extends BaseChart
{
public int index;
public boolean needDraw;
public int scope;
public int value;
protected void draw(Canvas canvas, RectF rectf, float f)
{
if (!needDraw)
{
return;
} else
{
float f1 = rectf.left + rectf.width() / 2.0F;
float f2 = rectf.bottom;
float f3 = rectf.left + rectf.width() / 2.0F;
float f4 = rectf.bottom - f * rectf.height();
mRenderer.paint.setStrokeWidth(rectf.width());
canvas.drawLine(f1, f2, f3, f4, mRenderer.paint);
return;
}
}
protected void draw(Canvas canvas, RectF rectf, float f, boolean flag)
{
if (!needDraw)
{
return;
}
if (flag)
{
float f1 = rectf.left + rectf.width() / 2.0F;
float f2 = rectf.top;
float f3 = rectf.left + rectf.width() / 2.0F;
float f4 = rectf.top + f * rectf.height();
mRenderer.paint.setStrokeWidth(rectf.width());
canvas.drawLine(f1, f2, f3, f4, mRenderer.paint);
return;
} else
{
draw(canvas, rectf, f);
return;
}
}
public String toString()
{
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append((new StringBuilder()).append("Value : ").append(value).toString()).append(" , ");
stringbuilder.append((new StringBuilder()).append("Index : ").append(index).toString()).append(" , ");
stringbuilder.append((new StringBuilder()).append("Scope : ").append(scope).toString()).append(" , ");
stringbuilder.append((new StringBuilder()).append("NeedDrow : ").append(needDraw).toString());
return stringbuilder.toString();
}
public BarItem()
{
}
}
private class Axis extends BaseChart
{
public int offset;
public int stroke;
public int value;
public Axis()
{
}
public Axis(Context context)
{
super(context);
}
}
private class BarItemComparator
implements Comparator
{
public int compare(BarItem baritem, BarItem baritem1)
{
return baritem.index - baritem1.index;
}
public volatile int compare(Object obj, Object obj1)
{
return compare((BarItem)obj, (BarItem)obj1);
}
public BarItemComparator()
{
}
}
}